<html>
<head>
<title>Exuberant Ctags: Why?</title>
</head>
<body>

<h1>What makes this implementation of ctags desirable?</h1>

<ol>

<p>
<li>
Supports <a href="languages.html">many programming languages</a>.
</li>
</p>

<p>
<li>It is capable of generating tags for <strong><em>all</em></strong> types
    of C/C++ language tags, including all of the following:
    <p>
    <menu>
    <li type=disk>class names
    <li type=disk>macro definitions
    <li type=disk>enumeration names
    <li type=disk>enumerators
    <li type=disk>function definitions
    <li type=disk>function prototypes/declarations
    <li type=disk>class, interface, struct, and union data members
    <li type=disk>structure names
    <li type=disk>typedefs
    <li type=disk>union names
    <li type=disk>variables (definitions and external declarations)
    </menu>
</li>
</p>

<p>
<li>It is far less easily fooled by C code containing <code>#if</code>
    preprocessor conditional constructs, using a conditional path selection
    algorithm to resolve complicated choices, and a fall-back algorithm when
    this one fails.
</li>
</p>

<p>
<li>Supports user-defined languages, using regular expressions.
</li>
</p>

<p>
<li>Supports output of Emacs-style TAGS files.
</li>
</p>

<p>
<li>Can also be used to print out a list of selected objects found in source
    files.
</li>
</p>

<p>
<li>Compiles on UNIX, MSDOS, Windows 95/98/NT, OS/2, QNX, Amiga, QDOS, VMS,
    Macintosh, and Cray.
</li>
</p>

</ol>

<hr>
<a href="http:index.html">Back to <strong>Exuberant Ctags</strong></a>

</body>
</html>
